package com.fdb.efp.nls.service.dao;

import com.fdb.basic.framework.core.base.DataOptionalAuthorityDao;
import com.fdb.efp.nls.service.domain.PrdInfo;
import com.fdb.efp.nls.service.vo.PrdInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>DAO interface:产品表				<p>
 *
 * @author fuzm
 * @date 2018-05-03
 */
public interface PrdInfoDao extends DataOptionalAuthorityDao {

	public int insertPrdInfo(PrdInfo prdInfo);

	public int deleteByPk(PrdInfo prdInfo);

	public int updateByPk(PrdInfo prdInfo);

	public PrdInfo queryByPk(PrdInfo prdInfo);

	/**
	 * @param prdInfo
	 * @return
	 * @description:根据产品编号查询产品信息
	 * @date:2019年1月26日 上午11:29:31
	 * @author:cenyj
	 */
	public PrdInfo queryByPrdCode(PrdInfo prdInfo);

	public List<PrdInfo> queryAllOwnerByPage(PrdInfo prdInfo);

	public List<PrdInfo> queryAllCurrOrgByPage(PrdInfo prdInfo);

	public List<PrdInfo> queryAllCurrDownOrgByPage(PrdInfo prdInfo);

	public PrdInfo queryLastPrdInfo(PrdInfo prdInfo);

	public PrdInfo queryValidPrdInfo(PrdInfo prdInfo);

	public List<PrdInfo> queryPrdInfoSeletorByPage(PrdInfo prdInfo);

	public List<PrdInfo> queryPrdInfoByOthers(PrdInfo prdInfo);

	public List<PrdInfo> queryAllPrdInfoList();

	/**
	 * 查询规则集ID 被那些产品引用
	 *
	 * @param ruleCollId 规则集ID
	 * @return 引用规则集ID 的产品ID列表
	 */
	List<String> queryRuleCollQuotePrdId(@Param("ruleCollId") String ruleCollId);

	public List<PrdInfo> queryPrdType(PrdInfoVO prdInfoVo);

	/**
	 * 分页查询列表数据（不做权限控制）
	 *
	 * @param prdInfo
	 * @return
	 * @author qiuyf
	 * @version 1.0
	 * @since 2019年2月18日 下午4:42:27
	 */
	public List<PrdInfo> queryAllPrdInfoByPage(PrdInfo prdInfo);

    /**
	 * TODO 查询产品额度<br>
	 * 0.2:wanglihua:2019年5月22日 下午4:23:41:TODO <br>
	 *
	 * @author wanglihua
	 * @date 2019年5月22日 下午4:23:41
	 * @version 0.1 初始为0.1,后续变更则修改
	 * @since 2019年5月22日 下午4:23:41
	 */
    public PrdInfo queryAmt(@Param("prdCode") String prdCode);

    /**
	 * 查询符合条件的数据 目前只根据is_load
	 *
	 * @param prdInfo
	 * @return
	 */
	public List<PrdInfo> queryAllEligible(PrdInfo prdInfo);

	public List<PrdInfo> queryAllCurrOwnerPrdByPage(PrdInfo prdInfo);

	public List<PrdInfo> queryPrdAccPrdByPage(PrdInfo prdInfo);

    List<PrdInfo> listByGuarWay(@Param("guarWay") String guarWay);
}